package com.tgy.leetcode;

import java.util.HashMap;
import java.util.Map;

/**
 * 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组，并返回该子数组的长度。
 */
public class _525_连续数组 {

    public static int findMaxLength(int[] nums) {

        // [1,1,0,1,0]

        Map<Integer,Integer> map = new HashMap<>();

        map.put(0,-1);

        int maxLen = 0;
        int count = 0;
        for (int i = 0; i < nums.length; i++) {

            int num = nums[i];
            if (num == 1) {

                count+= num;
            }else {
                count -= 1;
            }

            if (map.containsKey(count)) {

                 maxLen = Math.max(maxLen, i - map.get(count));
            }else {

                map.put(count,i);
            }

        }

        return maxLen;
    }

    public static void main(String[] args) {

        int[] nums = {1,1,0,1,1};
        System.out.println(findMaxLength(nums));
    }
}
